import Vue from 'vue'
import App from './App.vue'
import Vuex from './vuex/index' // Vuex ==> { install, Store }

// 第一步：安装插件，实际是执行了 Vuex.install 函数
Vue.use(Vuex)

// 第二步：创建 store 实例
const store = new Vuex.Store({
  state: {
    count: 10,
  },
  mutations: {
    // addCount(state, payload) {
    //   if (!payload) {
    //     state.count++
    //   } else {
    //     state.count += payload
    //   }
    // },
    addCount(state, payload = 1) {
      state.count += payload
      console.log(state.count)
    },
  },
  actions: {
    addCountAsync(context, payload) {
      setTimeout(() => {
        context.commit('addCount', payload)
      }, 3000)
    },
  },
  getters: {
    doubleCount(state, getters) {
      console.count('doubleCount getter 执行次数')
      return state.count * 2
    },
  },
})

Vue.config.productionTip = false

// 项目的根实例
new Vue({
  name: 'Root',
  // 第三步：将 store 实例挂载到 Vue 根实例上
  store,
  render: h => h(App),
}).$mount('#app')
